No one can argue that computers, computing systems, and data communication networks have changed the way in which people live, work, play and communicate. Some have even gone so far as to state that distributed communications network, made possible by modern computing and communication devices, are responsible for the greatest sociological paradigm shift since the industrial revolution. For example, due to the proliferation of modern computing devices and distributed communication networks, which are capable of carrying voice, video, data, and various other formats of communication, many modern workers have been freed from having to be located at any fixed point or location in order to accomplish their day to day tasks. Telecommuting and online collaboration are ever increasing trends.
Along with the benefits that come with being able to work from one or multiple computing devices located in any one of a number of places, there come certain complications and drawbacks which have not yet been sufficiently addressed. Namely, since mobile users may use multiple devices, it may be difficult and/or tedious work to synchronize data across all the devices a person may use, thus allowing access to the most up to date data when and where it is required. Since data may be scattered (e.g. replicated) over different devices and locations, changes to data made on one device may not be propagated to a second or third device used by the same user, and thus when the user attempts to access the altered data from another device, the data may not be up-to-date. This same problem may be faced by a group of people who are collaboratively working on and sharing certain data. Changes made by one group member on a data unit on his or her device may not be reflected on a copy of the data unit residing on a second group member's device, and thus group members may find themselves out of sync, working of diverging documents.
Although there are some solutions which have attempted to the address the above mentioned problem, such as Virtual Private Networks (“VPNs”) to allow remote access, these solutions are complex, expensive, and force users to actively connect to a server before proceeding. These solutions do not allow offline access and, since data is not replicated, do not automatically keep a backup of the users' data. Therefore, there is a need for a solution which will allow users to work seamlessly across multiple devices (e.g. PC, laptop, PDA, mobile phone), residing in multiple locations (e.g. home, office, on the go) while maintaining all their desired data (e.g. files, pictures, emails, etc.) available to them at all time. Furthermore, there is a need for a solution which will allow users to transfer data to others and/or collaborate with other users in a shared environment. There is a need for each of the above mentioned solutions to be operable both when a user's device is connected (e.g. online), through a communication network, to other devices in the collaborative environment, and just as importantly when the user's device is not connected (e.g. offline).
The system and methods described herein are different from what is known in the art for synchronization and replication solution, in the following manners: The solution presented herein enables a synchronization application to locally process and achieve synchronization independently on changes generated by other synchronization application(s) in a reference to items or group of items that the two or more synchronization application(s) are assigned to synchronize. It may be clarified that by locally process and achieve synchronization independently the synchronization application may process the received changes without being advised by any other applications including but not limited to the Synchronization Service and any of the other Synchronization Applications. It may be further clarified that locally processing the logs and achieving synchronization independently is opposed to what is known in the Art as Master Slave relations. Master Slave relations relation is when one application is controlling or telling the other application what to do in order to achieve synchronization. Locally processing the received changes and achieving synchronization independently is also opposed to what is known in the are as centralized synchronization systems or server based synchronization systems where the centralized server is actually the master for synchronization, in the case were you have millions of folders to synchronize the cost related to the centralized server may be very high.
Locally processing the changes and achieving synchronization independently is desirable in a P2P system described herein were the number of synchronization applications may be unlimited and the processing resources are distributed among the peers as opposed to centralized servers and high capacity networks needed in order to process million of synchronization changes per second with very high associated cost. Locally processing the changes and achieving synchronization independently is desirable in a P2P system because some of the synchronization application my not be online 24/7 and the presence of many pears can help achieve synchronization even if some of the peers are not online using change relay technique of transferring changes of offline peers using the online peers. Locally processing the changes and achieving synchronization independently is also desirable because it is more efficient then centralized systems, for example 2 computers synchronize peer-to-peer instead of synchronizing the changes through a server which is an additional computing device that increases the total number of computers to 3 and the changes traffic between the 3 computing devices is doubled. Locally processing the changes and achieving synchronization independently is also desirable because P2P synchronization networks may be considered more secured and private because the synchronized data needs to travel only between the allowed peers with no mediation through servers.